﻿//============================================================
//write by bxl at 2021-06-13 22:03:22
//============================================================



using BCCommon;
using BCDto.CRM.BigCustomer;
using BCDto.Sim.Admin.Admin;
using System;

namespace BCService.CRM.BigCustomer
{
    public interface IBigCustomerService
    {
        /// <summary>
        /// 添加新大客户信息纪录
        /// </summary>
        /// <param name="bigCustomerRequestDto"></param>
        /// <param name="admin"></param>
        BigCustomerDto Add(BigCustomerRequestDto bigCustomerRequestDto, AdminDto admin);

        /// <summary>
        /// 删除大客户信息记录
        /// </summary>
        /// <param name="bigCustomerId">大客户Id</param>
        /// <returns></returns>
        void Delete(long bigCustomerId);

        /// <summary>
        /// 获取大客户信息记录
        /// </summary>
        /// <param name="bigCustomerId">大客户Id</param>
        /// <returns></returns>
        BigCustomerDto GetById(long bigCustomerId);
        /// <summary>
        /// 获取大客户信息
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <returns></returns>
        BigCustomerDto GetByUserId(long userId);
        PageableList<BigCustomerViewDto> GetList(AdminDto admin,  long? bigCustomerGroupId, int? bigCustomerLevel, string customerName, string provinceCode, string cityCode, string countyCode, string phone, string weChatNo,   DateTime? start, DateTime? end, int pageIndex, int pageSize);

        /// <summary>
        /// 修改大客户信息记录
        /// </summary>
        /// <param name="bigCustomerPutDto"></param>
        /// <param name="admin"></param>
        /// <returns></returns>
        BigCustomerDto Update(BigCustomerPutDto bigCustomerPutDto, AdminDto admin);


        /// <summary>
        /// 启用禁用业务类型
        /// </summary>
        /// <param name="bigCustomerEnableBusinessTypePutDto"></param>
        /// <param name="admin"></param>
        /// <returns></returns>
        BigCustomerDto UpdateEnableBusinessType(BigCustomerEnableBusinessTypePutDto bigCustomerEnableBusinessTypePutDto, AdminDto admin);

        /// <summary>
        /// 设置协议价格和最大重量
        /// </summary>
        /// <param name="bigCustomerId">大客户Id</param>
        /// <param name="sameCityPrice">同城协议价格</param>
        /// <param name="smallPiecesPrice">小件协议价格</param>
        /// <param name="sameCityPriceMaxWeight">同城协议价格最大重量</param>
        /// <param name="smallPiecesPriceMaxWeight">小件协议价格最大重量</param>
        /// <param name="runErrandsPrice">跑腿协议价格</param>
        /// <param name="runErrandsPriceMaxWeight">跑腿协议价格最大重量</param>
        /// <param name="admin"></param>
        /// <returns></returns>
        BigCustomerDto SetAgreementPrice(long bigCustomerId, decimal? sameCityPrice, decimal? smallPiecesPrice, decimal? sameCityPriceMaxWeight,
            decimal? smallPiecesPriceMaxWeight, decimal? runErrandsPrice, decimal? runErrandsPriceMaxWeight, AdminDto admin);
    }
}